There are many tools available today which are capable of producing various types of graphical representations of source code. These include for example call charts which graphically illustrate which software procedures call which other software procedures, and dataflow diagrams which show the direct flow of data between software procedures.
Existing tools are generally only capable of capturing relationships between software entities which are very direct such as the above-identified call charts. More generally, existing tools are only capable of capturing the static structure of software. However, in examining software in a static manner, existing tools are not capable of identifying relationships such as containments or indirect messaging relationships between processes.
Processes are very interesting because they determine instantiation of data in software. When a certain data definition is shared between several processes, then at run-time there will exist several independent instances of that data. Each process will potentially have a different instance of the data. How data is shared between processes is dependent on the target operating system.
When looking at any data transfers within software entities, process structure needs to be taken into consideration because the data is potentially instantiated in several processes.
Processes are also important because the actions of different processes can be performed in parallel and on the other hand, all actions of one instance of a process are always performed sequentially. Actions of different processes need to be synchronized, i.e. the software should guarantee that certain interleavings of actions never happen. Processes use the operating system to exchange information and in particular to synchronize themselves.
Thus in a multiprocess system it would be desirable to observe the dynamic structure of the software, i.e. to obtain a view of the software showing relationships at run-time. Existing tools do not have this ability.
A system and method for identifying indirect messaging relationships between static software entities has been described in applicant's copending U.S. application Ser. No. 09/090,954 filed Jun. 5, 1998 hereby incorporated by reference. The system described therein is useful for generating a static view of a system but is incapable of identifying dynamic structure.